home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / C64 / A-Monthly Disks / (c)aaw.d64 / d2f (.txt) < prev    next >
Commodore BASIC  |  2007-02-04  |  1KB  |  62 lines

  1. 10 REM DECIMAL TO FRACTION CONVERTOR
  2. 20 REM BY R. H. YOUNG;APRIL,1988
  3. 100 PRINT"[147]"
  4. 110 PRINT"PRESS 1 TO REDUCE A FRACTION.":PRINT
  5. 120 PRINT"PRESS 2 TO OBTAIN A FRACTION"
  6. 130 PRINT"FROM AN EXACT DECIMAL (<=9 DIGITS).":PRINT
  7. 140 PRINT"PRESS 3 TO OBTAIN A FRACTION"
  8. 150 PRINT"FROM A DECIMAL.":PRINT
  9. 155 PRINT"PRESS 4 TO END.":PRINT
  10. 160 GET A$:IF A$=""THEN 160
  11. 170 V=VAL(A$)
  12. 180 ON V GOTO 200,250,330,490
  13. 190 GOTO 160
  14. 200 PRINT"[147]":INPUT"INPUT NUMERATOR";N
  15. 210 INPUT"INPUT DENOMINATOR";D
  16. 215 N=ABS(N):D=ABS(D)
  17. 220 GOSUB 500
  18. 230 PRINT:PRINT"NUMERATOR="N
  19. 240 PRINT"DENOMINATOR="D
  20. 245 PRINT:GOTO 110
  21. 250 PRINT"[147]":INPUT"INPUT DECIMAL";A
  22. 255 A=ABS(A)
  23. 260 C=INT(A):L=A-C
  24. 270 D=1E9:N=D*L
  25. 280 GOSUB 500
  26. 290 N=N+C*D
  27. 300 PRINT:PRINT"NUMERATOR="N
  28. 310 PRINT"DENOMINATOR="D
  29. 320 PRINT:GOTO 110
  30. 330 PRINT"[147]":INPUT"INPUT DECIMAL";A
  31. 340 PRINT:INPUT"INPUT MAXIMUM ERROR";B
  32. 350 A=ABS(A):B=ABS(B)
  33. 370 C=INT(A):L=A-C:R=0
  34. 380 IF L>.5 THEN L=1-L:R=1
  35. 390 IF L=.5 THEN 430
  36. 395 D=4:N=INT(4*L)
  37. 400 GOSUB 575
  38. 410 IF R=1 THEN N=D-N
  39. 420 GOTO 440
  40. 430 N=1:D=2:E=0
  41. 440 N=N+C*D:GOSUB 500
  42. 450 PRINT:PRINT"NUMERATOR="N
  43. 460 PRINT"DENOMINATOR="D
  44. 470 PRINT"ERROR="E
  45. 480 PRINT:GOTO 110
  46. 490 END
  47. 500 IF N>D THEN 520
  48. 510 H=N:I=D:GOTO 530
  49. 520 H=D:I=N
  50. 530 J=I/H:K=I-H*INT(J)
  51. 540 I=H:H=K:IF K=0 THEN 560
  52. 550 GOTO 530
  53. 560 N=N/I:D=D/I
  54. 570 RETURN
  55. 575 NI=1
  56. 580 PRINT"ITERATION"NI
  57. 590 E=L-N/D:F=ABS(E)
  58. 600 IF F<B THEN RETURN
  59. 610 IF E>0 THEN 630
  60. 620 D=D+1:N=INT(D*L+.5):NI=NI+1:GOTO 580
  61. 630 N=N+1:D=INT(N/L+.5):NI=NI+1:GOTO 580
  62.